#! user/bin/python
# -*- coding: utf-8 -*-

"""
Created on 2021/8/25 15:01

@File: pop邮件阅读器脚本_popmail.py
@Author: LT
@Description: POP用于邮件的获取，运行在服务器机器上使用端口110的套接字上
              Python的poplib隐藏了所有协议细节；想要发送邮件，则得使用smtplib模块；

              这个必须要用命令行模式运行
"""
import poplib
from getpass import getpass
import sys
from .. import 邮件配置模块_mailconfig

popmailserver = 邮件配置模块_mailconfig.popservername
popmailuser = 邮件配置模块_mailconfig.popusername
popmailpasswd = getpass("Please enter your password for %s" % popmailserver)

print('Connecting...')
# 连接，登录pop邮件服务器，以下时必须步骤
server = poplib.POP3(popmailserver)                                        # 创建实例，通过套接字连接上POP服务器
server.user(popmailuser)
server.pass_(popmailpasswd)                                                # 访问qq的pop服务器是要它的授权码的

try:
    print(server.getwelcome())                                          # 打印返回的欢迎信息
    msgCount, msgBytes = server.stat()                                  # 用stat方法抓取，返回消息数，消息总字节数
    print('There are', msgCount, 'mail message in', msgBytes, 'bytes')
    print(server.list())                                                # 返回“消息编号 消息大小”字符串组成的列表
    print('-' * 80)
    input('[Press Enter Key...]')

    for i in range(msgCount):
        # hdr是header题头列表；message是信息主体内容；octets是字节数
        hdr, message, octets = server.retr(i + 1)                       # 使用retr（传入消息编号——从1开始）抓取特定消息
        for line in message:                                            # 抓取，打印所有邮件
            print(line.decode())                                        # 使用decode将待显示的内容解码成str字符串，因poplib以bytes返回内容
        print("-" * 80)
        if i < msgCount - 1:
            input('[Press Enter key]')                                  # 邮箱在quit之前一直处于锁定状态
finally:                                                                # 要确保解锁了邮箱，否则一直锁定到连接超时
    server.quit()

print('Bye')
